package com.tidy.seed.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 接口统一返回包装类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {

    private Integer code;  // 状态码（如200=成功，500=失败）
    private String msg;   // 响应消息
    private Object data;  // 响应数据（成功时返回，失败时可为null）

    /**
     * 成功响应（无数据，默认消息）
     */
    public static Result success() {
        return new Result(StatusCode.CODE_200, "success", null);
    }

    /**
     * 成功响应（带数据，默认消息）
     */
    public static Result success(Object data) {
        return new Result(StatusCode.CODE_200, "success", data);
    }

    /**
     * 成功响应（带数据和自定义消息）
     */
    public static Result success(Object data, String msg) {
        // 修复：直接使用传入的msg参数，而非强制赋值
        return new Result(StatusCode.CODE_200, msg, data);
    }

    /**
     * 失败响应（自定义状态码和消息）
     */
    public static Result fail(Integer code, String msg) {
        return new Result(code, msg, null);
    }

    public static Result fail(String msg) {
        return new Result(500, msg, null);
    }

    /**
     * 失败响应（默认系统错误）
     */
    public static Result fail() {
        return new Result(StatusCode.CODE_500, "系统错误", null);
    }
}
